package com.hky.aiagent.agent;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * ReAct代理抽象类
 *
 * @author hky
 */
@Data
@EqualsAndHashCode(callSuper = true)
public abstract class ReActAgent extends BaseAgent {

    /**
     * 处理当前状态并决定下一步行动
     */
    public abstract boolean think();

    /**
     * 执行决定行动
     */
    public abstract String act();

    /**
     * 执行单个步骤
     */
    @Override
    public String step() {
        try {
            boolean shouldAct = think();
            if (!shouldAct){
                return "思考完成-无需行动";
            }
            return act();
        }catch (Exception e){
            // 记录异常日志
            e.printStackTrace();
            return "执行步骤时发生异常：" + e.getMessage();
        }
    }
}
